#ifndef __MVP_LOWPOWER_h__
#define __MVP_LOWPOWER_h__

#include "mvp_comm.h"
#include "mvp_video.h"
#include "mvp_alarm.h"

#define AOV_FRAME_MAX  60
#define AOV_WAKEUP_PIC "/tmp/aov_wake.jpeg"

typedef enum _aov_wakeup_way
{
    MVP_AOV_WAKEUP_GPIO         = 0,
    MVP_AOV_WAKEUP_TIMEOUT      = 1,
    MVP_AOV_WAKEUP_AE           = 2,
    MVP_AOV_WAKEUP_ALARM_HUMAN  = 3,
    MVP_AOV_WAKEUP_ALARM_CAR    = 4,
    MVP_AOV_WAKEUP_ALARM_PET    = 5,
}MVP_AOV_WAKEUP_WAY_E;

typedef enum _aov_alarm_wakeup_way
{
    MVP_AOV_ALWU_NONE       = 0,
    MVP_AOV_ALWU_PIR  	    = (1 << 0),
    MVP_AOV_ALWU_HUMAN      = (1 << 1),
    MVP_AOV_ALWU_CAR        = (1 << 2),
    MVP_AOV_ALWU_PET        = (1 << 3),
}MVP_AOV_ALARM_WAKEUP_WAY_E;

typedef enum _aov_frame_mode {
    MVP_SINGLE_FRAME_MODE = 0,       // 单帧模式
    MVP_MULTI_FRAME_MODE  = 1,       // 连续帧模式
}MVP_AOV_FRAME_MODE_E;

typedef struct _aov_info
{
    mv_s32_t s32_frame_cnt;
}MVP_AOV_INFO_T;

mv_s32_t  mvp_aov_init(mv_s32_t s32_suspend_s);

mv_s32_t  mvp_aov_video_chn_set(mv_s32_t chn);

mv_s32_t  mvp_aov_suspend_cb_set();

mv_void_t mvp_aov_suspend(mv_void_t);

mv_s32_t  mvp_aov_wakeup_way_set(mv_s32_t s32_wakeup_way);

mv_s32_t  mvp_aov_wakeup_reason_get(mv_void_t);

mv_s32_t mvp_aov_wakeup_alarm_info_get(MVP_ALARM_DATA_T *pst_data) ;

mv_s32_t  mvp_aov_frame_mode_set(MVP_AOV_FRAME_MODE_E mode);

mv_s32_t  mvp_aov_frame_mode_get(mv_void_t);

mv_s32_t  mvp_aov_suspend_time_set(mv_s32_t s32_suspend_s);

mv_s32_t  mvp_aov_suspend_time_set_ms(mv_s32_t s32_suspend_ms);

mv_s32_t  mvp_aov_video_frame_get(mv_s32_t s32_timeout_ms, mv_s32ptr_t ps32_frame_cnt);

mv_s32_t  mvp_aov_video_dev_irled_set(mv_bool_t bl_en);;

mv_s32_t  mvp_aov_video_frame_max_get();

mv_void_t mvp_aov_sdcard_bind();

mv_void_t mvp_aov_sdcard_unbind();

#endif